package platzerworld.kegeln.gui.tabs;

import platzerworld.kegeln.R;
import platzerworld.kegeln.common.ConstantsIF;
import platzerworld.kegeln.common.KeyValueVO;
import platzerworld.kegeln.common.preference.KegelverwaltungPreference;
import platzerworld.kegeln.ergebnis.db.ErgebnisSpeicher;
import platzerworld.kegeln.ergebnis.vo.ErgebnisVO;
import platzerworld.kegeln.gui.WettkampfPaarungEingeben;
import android.app.Activity;
import android.app.TabActivity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabHost.TabSpec;
import android.widget.TextView;

public class PaarungTabActivity extends TabActivity implements ConstantsIF {
	private static final long serialVersionUID = -2442666622124101590L;
	private KeyValueVO mSelectedMannschaftHeimKeyValueVO = null;
	private KeyValueVO mSelectedMannschaftGastKeyValueVO = null;
	private String spielTag = null;
	private String spielNr = null;
	private int mPaarungIndex=0;
	
	private boolean isEditMode = false;
	
	private ErgebnisSpeicher mErgebnisSpeicher;
	
	public LayoutInflater layoutInflater = null;
	ViewGroup viewGroupTabContent;
	View mSelectedView;
	private TabSpec heimTabSpec = null;
	private TabSpec gastTabSpec = null;
	private View heimTabView = null;
	private View gastTabView = null;
	
	private Intent gastIntent = null;
	private Intent heimIntent = null;
	
	private ErgebnisVO mSelectedErgebnisHeimVO = null;
	private ErgebnisVO mSelectedErgebnisGastVO = null;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.tabs);

		Bundle extras = getIntent().getExtras();
		if (extras == null) {
			return;
		}
		
		mSelectedMannschaftHeimKeyValueVO  = (KeyValueVO) extras.getSerializable(INTENT_EXTRA_WETTKAMPF_MANNSCHAFT_HEIM);
		mSelectedMannschaftGastKeyValueVO  = (KeyValueVO) extras.getSerializable(INTENT_EXTRA_WETTKAMPF_MANNSCHAFT_GAST);
		
		mPaarungIndex = extras.getInt(INTENT_EXTRA_WETTKAMPF_PAARUNG);
		spielTag = extras.getString(INTENT_EXTRA_WETTKAMPF_SPIELTAG);
		spielNr = extras.getString(INTENT_EXTRA_WETTKAMPF_SPIELNR);
		isEditMode = extras.getBoolean(INTENT_EXTRA_EDIT_MODE);
		
		if(isEditMode){
			mSelectedErgebnisHeimVO = (ErgebnisVO) extras.getSerializable(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_HEIM);
			mSelectedErgebnisGastVO = (ErgebnisVO) extras.getSerializable(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_GAST);
		}
		init();
		
		getTabHost().getTabWidget().setDividerDrawable(R.drawable.tab_divider);
		
		getTabHost().setOnTabChangedListener(new OnTabChangeListener() {
			
			@Override
			public void onTabChanged(String tabId) {
				if("HEIM".equals(tabId)){
					
				}else if("GAST".equals(tabId)){
					
				}
			}
		});
		setupTab();
	}
	
	@Override
	protected void onDestroy() {
		cleanDatabase();
		super.onDestroy();
	}
	
	private void init(){
		initWidgets();
		bindWidgets();
		initStyle();
		initListener();
		initContextMenu();
		initDatabase();
	}
	
	private void bindWidgets(){
	}
	
	private void initStyle() {
	}
	
	private void initWidgets(){
	}
	
	private void initListener(){	
		
	}
	
	private void initContextMenu(){
	}
	
	private void initDatabase(){
		mErgebnisSpeicher = new ErgebnisSpeicher(this);
	}
	
	private void cleanDatabase(){
		if(null != mErgebnisSpeicher){
			mErgebnisSpeicher.schliessen();
		}
	}

	private void setupTab() {
		heimTabView = createTabView(getTabHost().getContext(), "HEIM");
		gastTabView = createTabView(getTabHost().getContext(), "GAST");

		if(!isEditMode){
			mSelectedErgebnisHeimVO = new ErgebnisVO();
			mSelectedErgebnisGastVO = new ErgebnisVO();
			
			mSelectedErgebnisHeimVO.mannschaftId = mSelectedMannschaftHeimKeyValueVO.key;
			mSelectedErgebnisHeimVO.spielZeit = spielTag;
			mSelectedErgebnisHeimVO.spielId = Long.parseLong(spielNr);
			
			mSelectedErgebnisGastVO.mannschaftId = mSelectedMannschaftGastKeyValueVO.key;
			mSelectedErgebnisGastVO.spielZeit = spielTag;
			mSelectedErgebnisGastVO.spielId = Long.parseLong(spielNr);
		}
		
		
		heimIntent = new Intent(this, WettkampfPaarungEingeben.class);
		heimIntent.putExtra(INTENT_EXTRA_WETTKAMPF_MANNSCHAFT_HEIM, mSelectedMannschaftHeimKeyValueVO);
		heimIntent.putExtra(INTENT_EXTRA_WETTKAMPF_PAARUNG, mPaarungIndex);
		heimIntent.putExtra(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_HEIM, mSelectedErgebnisHeimVO);
		heimIntent.putExtra(INTENT_EXTRA_WETTKAMPF_HEIM_GAST, "HEIM");
		heimIntent.putExtra(INTENT_EXTRA_EDIT_MODE, isEditMode);
		
		gastIntent = new Intent(this, WettkampfPaarungEingeben.class);
		gastIntent.putExtra(INTENT_EXTRA_WETTKAMPF_MANNSCHAFT_HEIM, mSelectedMannschaftGastKeyValueVO);
		gastIntent.putExtra(INTENT_EXTRA_WETTKAMPF_PAARUNG, mPaarungIndex);
		gastIntent.putExtra(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_GAST, mSelectedErgebnisGastVO);
		gastIntent.putExtra(INTENT_EXTRA_WETTKAMPF_HEIM_GAST, "GAST");
		gastIntent.putExtra(INTENT_EXTRA_EDIT_MODE, isEditMode);
		
		heimTabSpec = getTabHost().newTabSpec("HEIM").setIndicator(heimTabView).setContent(heimIntent);
		getTabHost().addTab(heimTabSpec);
		
		gastTabSpec = getTabHost().newTabSpec("GAST").setIndicator(gastTabView).setContent(gastIntent);
		getTabHost().addTab(gastTabSpec);

	}

	private static View createTabView(final Context context, final String text) {
		View view = LayoutInflater.from(context).inflate(R.layout.tabs_bg, null);
		TextView tv = (TextView) view.findViewById(R.id.tabsText);
		tv.setText(text);
		return view;
	}
	
	@Override
	public void finish() {
		ErgebnisVO ergHeim = (ErgebnisVO) heimIntent.getSerializableExtra(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_HEIM);
		ErgebnisVO ergGast = (ErgebnisVO) gastIntent.getSerializableExtra(INTENT_EXTRA_WETTKAMPF_ERGEBNIS_GAST);

		Intent data = new Intent();
		data.putExtra(INTENT_EXTRA_WETTKAMPF_PAARUNG_HEIM, ergHeim);
		data.putExtra(INTENT_EXTRA_WETTKAMPF_PAARUNG_GAST, ergGast);
		setResult(RESULT_OK, data);
		
		
		super.finish();
	}
	
	
}